Cấu trúc file Định_dạng_file

Có một số cách để cấu trúc dữ liệu trong một file. Những cách phổ biến nhất được mô tả dưới đây.

Các định dạng không cấu trúc (bãi chứa bộ nhớ thô)

Các định dạng tập tin trước đó đã sử dụng các định dạng dữ liệu thô bao gồm trực tiếp đổ hình ảnh bộ nhớ của một hoặc nhiều cấu trúc vào file.

Điều này có một số nhược điểm. Trừ khi các hình ảnh bộ nhớ cũng có không gian dành riêng cho các phần mở rộng trong tương lai, việc mở rộng và cải thiện loại file có cấu trúc này là rất khó khăn. Nó cũng tạo các file có thể dành riêng cho một nền tảng hoặc ngôn ngữ lập trình (ví dụ: cấu trúc chứa chuỗi Pascal không được nhận dạng như vậy trong C). Mặt khác, việc phát triển các công cụ để đọc và viết các loại tệp này rất đơn giản.

Những hạn chế của các định dạng phi cấu trúc đã dẫn đến sự phát triển của các loại định dạng tập tin khác có thể dễ dàng mở rộng và tương thích ngược cùng một lúc.

Định dạng dựa trên chunk

Trong loại cấu trúc file này, mỗi phần dữ liệu được nhúng vào một bộ chứa bằng cách nào đó xác định dữ liệu. Phạm vi của bộ chứa có thể được xác định bằng một số loại bắt đầu và đánh dấu kết thúc bằng một loại trường độ dài rõ ràng ở đâu đó hoặc theo các yêu cầu cố định của định nghĩa định dạng tập tin.

Trong suốt những năm 1970, nhiều chương trình đã sử dụng các định dạng thuộc loại chung này. Ví dụ: các trình xử lý văn bản như troff, Script và Scribe và xuất các file cơ sở dữ liệu như CSV. Electronic Arts và Commodore - Amiga cũng đã sử dụng loại định dạng tập tin này vào năm 1985, với định dạng tệp IFF (Interchange File Format).

Một container đôi khi được gọi là "chunk", mặc dù "chunk" cũng có thể ngụ ý rằng mỗi mảnh nhỏ và/hoặc khối đó không chứa các khối khác; nhiều định dạng không áp đặt những yêu cầu đó.

Thông tin xác định một "khối" cụ thể có thể được gọi là nhiều thứ khác nhau, thường là các thuật ngữ bao gồm "tên trường", "mã định danh", "nhãn" hoặc "thẻ". Các mã định danh thường có thể đọc được và phân loại các phần của dữ liệu: ví dụ: "họ", "địa chỉ", "hình chữ nhật", "tên phông chữ",v.v. Đây không giống với mã định danh theo nghĩa của khóa cơ sở dữ liệu hoặc số sê-ri (mặc dù mã định danh có thể xác định tốt dữ liệu được liên kết của nó như một khóa như vậy).

Với kiểu cấu trúc file này, các công cụ không biết một số định danh chunk nhất định chỉ cần bỏ qua những công cụ mà chúng không hiểu. Tùy thuộc vào ý nghĩa thực tế của dữ liệu bị bỏ qua, điều này có thể có hoặc không hữu ích (CSS xác định rõ ràng hành vi đó).

Khái niệm này đã được sử dụng lặp đi lặp lại bởi RIFF (Microsoft-IBM tương đương với IFF), PNG, lưu trữ JPEG, Các stream và file được mã hóa DER (Distinguished Encoding Rules) (được mô tả ban đầu trong CCITT X.409: 1984 và do đó có trước IFF) và Định dạng trao đổi dữ liệu có cấu trúc (SDXF).

Thật vậy, bất kỳ định dạng dữ liệu bằng cách nào đó phải xác định tầm quan trọng của các bộ phận cấu thành của nó và các dấu mốc biên được nhúng là một cách rõ ràng để làm như vậy:

  • Các tiêu đề MIME thực hiện điều này với nhãn được phân tách bằng dấu hai chấm ở đầu mỗi dòng logic. Các tiêu đề MIME không thể chứa các tiêu đề MIME khác, mặc dù nội dung dữ liệu của một số tiêu đề có các phần phụ có thể được trích xuất bằng các quy ước khác.
  • CSV và các file tương tự thường làm điều này bằng cách sử dụng bản ghi tiêu đề có tên trường và bằng dấu phẩy để đánh dấu ranh giới trường. Giống như MIME, CSV không có điều khoản nào cho các cấu trúc có nhiều hơn một cấp.
  • XML và họ hàng của nó có thể được coi là một loại định dạng dựa trên khối, vì các yếu tố dữ liệu được xác định bằng cách đánh dấu gần giống với định danh chunk. Tuy nhiên, nó có những lợi thế chính thức như lược đồ và xác nhận, cũng như khả năng thể hiện các cấu trúc phức tạp hơn như cây, DAG và biểu đồ. Nếu XML được coi là định dạng "chunk", thì SGML và IBM GML tiền nhiệm của nó là một trong những ví dụ sớm nhất về các định dạng đó.
  • JSON tương tự như XML mà không có lược đồ, tham chiếu chéo hoặc định nghĩa cho ý nghĩa của các tên trường lặp lại và thường thuận tiện cho các lập trình viên.
  • Bộ đệm giao thức lần lượt tương tự như JSON, đáng chú ý là thay thế các điểm đánh dấu ranh giới trong dữ liệu bằng số trường, được ánh xạ đến/từ tên theo một số cơ chế bên ngoài.

Định dạng dựa trên thư mục

Đây là một định dạng mở rộng khác, gần giống với một hệ thống file (Tài liệu OLE là các hệ thống file thực tế), trong đó file bao gồm các 'mục nhập thư mục' có chứa vị trí của dữ liệu trong chính file cũng như chữ ký của nó trường hợp loại của nó). Ví dụ điển hình của các loại cấu trúc file này là ảnh đĩa, tài liệu OLE TIFF, thư viện. ODT và DOCX, được dựa trên PKZip được chunk và cũng mang một thư mục.

Liên quan